package zpe.controledeacesso.dao;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import zpe.controledeacesso.model.bean.GrupoDeUsuario;
import zpe.controledeacesso.model.bean.Permissoes;
import zpe.controledeacesso.model.bean.Transacao;
import zpe.controledeacesso.model.bean.Usuario;
import zpe.genericcrud.dao.GenericDao;

public class UsuarioDao extends GenericDao<Usuario>{
	
	public List<Permissoes> getPermissoes(Usuario usuario) throws SQLException {
		Connection con = getDataSource().getConnection();
		PreparedStatement ps = null;
		List<Permissoes> permissoes = new ArrayList<Permissoes>();
		try {
			ps = con.prepareStatement("select * from util.vw_get_permissoes where LOWER(nm_login) = LOWER(?)");
			ps.setString(1, usuario.getLogin());
			ResultSet rs = ps.executeQuery();
			while (rs.next()) {
				Permissoes p = new Permissoes();
				GrupoDeUsuario gUsuario = new GrupoDeUsuario();
				gUsuario.setId(rs.getInt("ci_grupo"));
				gUsuario.setDescricao(rs.getString("nm_grupo"));
				p.setGrupoDeUsuario(gUsuario);
				Transacao t = new Transacao();
				t.setId(rs.getInt("ci_transacao"));
				t.setDescricao(rs.getString("nm_transacao"));
				p.setTransacao(t);
				p.setAtivoBool(false);
				p.setRemoveBool(false);
				p.setEditableBool(false);
				if (rs.getString("fl_inserir").equals("S"))
					p.setAtivoBool(true);
				if (rs.getString("fl_deletar").equals("S"))
					p.setRemoveBool(true);
				if (rs.getString("fl_alterar").equals("S"))
					p.setEditableBool(true);
				permissoes.add(p);
			}
			rs.close();
		} finally {
			ps.close();
			con.close();
		}
		return permissoes;
	}
}
